package com.gylang.passport.service.login;

import com.gylang.common.dto.CommonResult;
import com.gylang.passport.domain.dto.LoginDTO;

/**
 * @author gylang
 * data 2021/1/8
 */
public interface LoginServiceManager {


    /**
     * 抽象登录接口
     *
     * @param dto 登录参数
     * @return 登录结果
     */
    CommonResult<Object> doLogin(LoginDTO dto);

    /**
     * 默认登录方法
     *
     * @param dto 登录参数
     * @return 登录结果
     */
    CommonResult<Object> simpleLogin(LoginDTO dto);

    /**
     * 默认登录方法
     *
     * @param dto 登录参数
     * @return 登录结果
     */
    CommonResult<Object> login(LoginDTO dto);

    /**
     * 带登录前置处理器的登录
     *
     * @param dto     登录参数
     * @param process 处理器
     * @return 登录结果
     */
    CommonResult<Object> login(LoginDTO dto, LoginBeforeProcess process);

    /**
     * 带登录前置处理器的登录
     *
     * @param dto     登录参数
     * @param process 处理器
     * @return 登录结果
     */
    CommonResult<Object> login(LoginDTO dto, LoginBeforeProcess... process);

    /**
     * 转成业务登录key
     *
     * @param dto dto
     * @return 登录业务key
     */
    String transferToBizKey(LoginDTO dto);
}
